﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace ProjectZero.Class
{
    public class Validar
    {
        public static bool ValidaCPF(string vrCPF) 
        {
            string valor = vrCPF.Replace(".", ""); 
            valor = valor.Replace("-", ""); 
            
            if (valor.Length != 11) 
                return false; 
            
            bool igual = true; 
            
            for (int i = 1; i < 11 && igual; i++) 
                if (valor[i] != valor[0]) 
                    igual = false; 

            if (igual || valor == "12345678909") 
                return false;
            
            int[] numeros = new int[11];

            for (int i = 0; i < 11; i++) 
                numeros[i] = int.Parse( valor[i].ToString()); 

            int soma = 0; 
            
            for (int i = 0; i < 9; i++) 
                soma += (10 - i) * numeros[i]; 
            
            int resultado = soma % 11; 

            if (resultado == 1 || resultado == 0) 
            { 
                if (numeros[9] != 0) 
                return false; 
            } 
            else if (numeros[9] != 11 - resultado) 
                return false; 

            soma = 0; 
            
            for (int i = 0; i < 10; i++) 
                soma += (11 - i) * numeros[i]; 
            
            resultado = soma % 11; 
            
            if (resultado == 1 || resultado == 0) 
            { 
                if (numeros[10] != 0) return false; 
            } 
            else if (numeros[10] != 11 - resultado) 
                return false; 
            
            return true; 
        }

        public static bool IsCnpj(string cnpj)
        {
            int[] multiplicador1 = new int[12] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
            int[] multiplicador2 = new int[13] { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
            int soma;
            int resto;
            string digito;
            string tempCnpj;
            cnpj = cnpj.Trim();
            cnpj = cnpj.Replace(".", "").Replace("-", "").Replace("/", "");
            if (cnpj.Length != 14)
                return false;
            tempCnpj = cnpj.Substring(0, 12);
            soma = 0;
            for (int i = 0; i < 12; i++)
                soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i];
            resto = (soma % 11);
            if (resto < 2)
                resto = 0;
            else
                resto = 11 - resto;
            digito = resto.ToString();
            tempCnpj = tempCnpj + digito;
            soma = 0;
            for (int i = 0; i < 13; i++)
                soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i];
            resto = (soma % 11);
            if (resto < 2)
                resto = 0;
            else
                resto = 11 - resto;
            digito = digito + resto.ToString();
            return cnpj.EndsWith(digito);
        }

        public static bool ValidaEmail(string Valor)
        {
            if (string.IsNullOrEmpty(Valor))
            {
                return true;
            }
            bool Valido = false;
            Regex regEx = new Regex(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$", RegexOptions.IgnoreCase);
            Valido = regEx.IsMatch(Valor);
            return Valido;
        }

        public static bool telefone(string tel)
        {
            string strtel = @"^\(?\d{2}\)?[\s-]?\d{4}-?\d{4}$";

            if (Regex.IsMatch(tel, strtel))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
